home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
nihcl-30.lha
/
nihcl-3.0
/
vectest
/
bitvec.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-05-16
|
6KB
|
169 lines
/* Test class BitVec
THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
"UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE
AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT
CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE
PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
Author:
K. E. Gorlen
Bg. 12A, Rm. 2033
Computer Systems Laboratory
Division of Computer Research and Technology
National Institutes of Health
Bethesda, Maryland 20892
Phone: (301) 496-1111
uucp: uunet!nih-csl!kgorlen
Internet:kgorlen@alw.nih.gov
Function:
Modification History:
$Log: bitvec.c,v $
* Revision 3.0 90/05/16 23:06:32 kgorlen
* Release for 1st edition.
*
*/
#include "IntVec.h"
static char rcsid[] = "$Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/vectest/RCS/bitvec.c,v 3.0 90/05/16 23:06:32 kgorlen Rel $";
static int initI[] = { 1,3,5 };
static bitVecByte initA[] = { 0x0a, 0x03 };
static bitVecByte initB[] = { 0x0c, 0x02 };
static const IntVec I(initI,3); // I = { 1 3 5 }
static const BitVec A(initA,10); // A = { 0 1 0 1 0 0 0 0 1 1 }
static const BitVec B(initB,10); // B = { 0 0 1 1 0 0 0 0 0 1 }
void test1()
{
// BitVec(unsigned)
BitVec C; // C = {}
// BitVec(const BitVec&)
BitVec T(A); // T = A
cerr << "BitVec T(A): " << T << endl;
// BitVec(const BitSlice&)
BitVec U(A(0,5,2)); // U = { 0 0 0 0 1 }
cerr << "BitVec U(A(0,5,2)): " << U << endl;
// BitVec(unsigned,bool)
BitVec V(10,YES); // V = { 1 1 1 1 1 1 1 1 1 1 }
cerr << "BitVec V(10,YES): " << V << endl;
// BitVec::operator=(const BitVec&)
C = U; // C = { 0 0 0 0 1 }
cerr << "C = U: " << C << endl;
C = C;
cerr << "C = C: " << C << endl;
// BitVec::operator=(const BitSlice&)
C = A(0,5,2); // C = { 0 0 0 0 1 }
cerr << "C = A(0,5,2): " << C << endl;
C = A; C = C(0,5,2); // C = { 0 0 0 0 1 }
cerr << "C = A; C = C(0,5,2): " << C << endl;
// BitVec::operator=(const BitSlct&)
C = A[B]; // C = { 0 1 1 }
cerr << "C = A[B]: " << C << endl;
C = A; C = C[B]; // C = { 0 1 1 }
cerr << "C = A; C = C[B]: " << C << endl;
// BitVec::operator=(const BitPick&)
C = A[I]; // C = { 1 1 0 }
cerr << "C = A[I]: " << C << endl;
C = A; C = C[I]; // C = { 1 1 0 }
cerr << "C = A; C = C[I]: " << C << endl;
// BitVec::operator=(bool)
C = 0; // C = { 0 0 0 }
cerr << "C = 0: " << C << endl;
// BitVec::operator!(const BitVec&)
C = !A; // C = { 1 0 1 0 1 1 1 1 0 0 }
cerr << "C = !A: " << C << endl;
// FRIEND_BitVec_OP_BitVec__BitVec
C = A|B; // C = { 0 1 1 1 0 0 0 0 1 1 }
cerr << "C = A|B: " << C << endl;
// FRIEND_BitVec_ASNOP_BitVec
C = A; C ^= B; // C = { 0 1 1 0 0 0 0 0 1 0 }
cerr << "C = A; C ^= B: " << C << endl;
}
void test2()
{
// BitVec(unsigned)
BitVec C; // C = {}
// BitSlice::operator=(const BitVec&)
C = A; C(0,5,2) = BitVec(5,YES); // C = { 1 1 1 1 1 0 1 0 1 1 }
cerr << "C = A; C(0,5,2) = BitVec(5,YES): " << C << endl;
// BitSlice::operator=(const BitSlice&)
C(1,5,2) = C(0,5,2); // C = { 1 1 1 1 1 1 1 1 1 1 }
cerr << "C(1,5,2) = C(0,5,2): " << C << endl;
// BitSlice::operator=(const BitPick&)
C(0,3,1) = A[I]; // C = { 1 1 0 1 1 1 1 1 1 1 }
cerr << "C(0,3,1) = A[I]: " << C << endl;
// BitSlice::operator=(const BitSlct&)
C(3,3,1) = A[B]; // C = { 1 1 0 0 1 1 1 1 1 1 }
cerr << "C(3,3,1) = A[B]: " << C << endl;
// BitSlice::operator=(bool)
C(0,6,1) = 0; // C = { 0 0 0 0 0 0 1 1 1 1 }
cerr << "C(0,6,1) = 0: " << C << endl;
// BitVec operator!(const BitSlice&)
C = !A(0,5,2); // C = { 1 1 1 1 0 }
cerr << "C = !A(0,5,2): " << C << endl;
// FRIEND_BitSlice_OP_BitSlice__Bitvec
C = A(0,5,2)^B(1,5,2); // C = { 0 1 0 0 0 }
cerr << "C = A(0,5,2)^B(1,5,2): " << C << endl;
// FRIEND_BitSlice_ASNOP_BitSlice
C = A; C(0,5,2) ^= B(1,5,2); // C = { 0 1 1 1 0 0 0 0 0 1 }
cerr << "C = A; C(0,5,2) ^= B(1,5,2): " << C << endl;
// BitPick::operator=(const BitVec&)
C = A; C[I] = BitVec(initA,3); // C = { 0 0 0 1 0 0 0 0 1 1 }
cerr << "C = A; C[I] = BitVec(initA,3): " << C << endl;
// BitPick::operator=(const BitPick&)
C[I] = A[I]; // C = { 0 1 0 1 0 0 0 0 1 1 }
cerr << "C[I] = A[I]: " << C << endl;
// BitPick::operator=(const BitSlct&)
C[I] = A[B]; // C = { 0 0 0 1 0 1 0 0 1 1 }
cerr << "C[I] = A[B]: " << C << endl;
// BitPick::operator=(const BitSlice&)
C = A; C[I] = A(0,3,2); // C = { 0 0 0 0 0 0 0 0 1 1 }
cerr << "C[I] = A(0,3,2): " << C << endl;
// BitPick::operator=(bool scalar)
C[I] = YES; // C = { 0 1 0 1 0 1 0 0 1 1 }
cerr << "C[I] = YES: " << C << endl;
// BitPick::operator BitSlice()
C = A[I]|B[I]; // C = { 1 1 0 }
cerr << "C = A[I]|B[I]: " << C << endl;
// BitSlct::operator=(const BitVec&)
C = A; C[A] = BitVec(4,NO);
cerr << "C = A; C[A] = BitVec(4,NO): " << C << endl; // C = { 0 0 0 0 0 0 0 0 0 0 }
// BitSlct::operator=(const BitPick&)
C = B; C[B] = A[I];
cerr << "C = B; C[B] = A[I]: " << C << endl; // C = { 0 0 1 1 0 0 0 0 0 0 }
// BitSlct::operator=(const BitSlct&)
C = A; C[A] = B[A]; // C = { 0 0 0 1 0 0 0 0 0 1 }
cerr << "C = A; C[A] = B[A]: " << C << endl;
// BitSlct::operator=(const BitSlice&)
C = A; C[A] = B(0,4,1); // C = { 0 0 0 0 0 0 0 0 1 1 }
cerr << "C = A; C[A] = B(0,4,1): " << C << endl;
// BitSlct::operator=(bool)
C = A; C[A] = NO; // C = { 0 0 0 0 0 0 0 0 0 0 }
cerr << "C = A; C[A] = NO: " << C << endl;
// BitSlct::operator BitSlice()
C = A[B]|B(0,3,1); // C = { 0 1 1 }
cerr << "C = A[B]|B(0,3,1): " << C << endl;
// BitVec reverse(const BitSlice&)
C = reverse(B(0,4,1));
cerr << "reverse(B(0,4,1)): " << C << endl; // { 1 1 0 0 }
// int sum(const BitSlice&)
cerr << "sum(A(1,5,2)): " << sum(A(1,5,2)) << endl; // 3
}
main()
{
cerr << "Test class BitVec\n";
cerr << "IntVec I(3,1,2): " << I << endl;
// BitVec(bitVecByte*,unsigned)
cerr << "BitVec A(initA,10): " << A << endl;
cerr << "BitVec B(initB,10): " << B << endl;
test1();
test2();
}